home *** CD-ROM | disk | FTP | other *** search
/ HAKERIS 11 / HAKERIS 11.ISO / soft / development / Macromedia RoboHelp X5 / RoboHelpOffice.exe / Data1.cab / _CFAFFFD66C02431CB6545FB2CD00CC33 < prev    next >
Encoding:
Text File  |  2003-09-18  |  27.5 KB  |  1,095 lines

  1. //FlashHelp 1.0
  2. var gnFlashVersion = -1;
  3. var gaPaths = new Array();
  4. var gaAvenues = new Array();
  5. var gnTopicOnly = -1;
  6.  
  7. var gsPPath = "";
  8. var gsStartPage = "";
  9. var gsRelCurPagePath = "";
  10. var gsTopicbarOrder="%%%WH_USER_OPTIONS.topicbar_order%%%";
  11.  
  12. var gstrBsAgent     = navigator.userAgent.toLowerCase();
  13. var gnBsVer               = parseInt(navigator.appVersion);
  14. var gbBsIE          = (gstrBsAgent.indexOf('msie') != -1);
  15. var gbBsNS          = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1));
  16. var gbBsOpera        = (gstrBsAgent.indexOf('opera') != -1);
  17. var gbBsNS4            = ((gbBsNS) && (gnBsVer >= 4));
  18. var gbBsNS6            = ((gbBsNS) && (gnBsVer >= 5));
  19.  
  20. var gbNav7        = false;
  21. var gbBsOpera6        = false;
  22. var gbBsOpera7        = false;
  23. var gbKonqueror        =(gstrBsAgent.indexOf("konqueror")!= -1);
  24. var gbMozilla        = ((gstrBsAgent.indexOf('gecko')!=-1) && (gstrBsAgent.indexOf('netscape')==-1));
  25.  
  26. var gbMac=    (gstrBsAgent.indexOf("mac")!=-1);
  27. var gbWindows=    ((gstrBsAgent.indexOf('win')!= -1)||(gstrBsAgent.indexOf('16bit')!= -1));
  28.  
  29. if(gbBsNS6)
  30. {
  31.     var nPos=gstrBsAgent.indexOf("gecko");
  32.     if(nPos!=-1)
  33.     {
  34.         var nPos2=gstrBsAgent.indexOf("/", nPos);
  35.         if(nPos2!=-1)
  36.         {
  37.             var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1));
  38.             if(nVersion>=20010726)
  39.             {
  40.                 if (nVersion>=20020823)
  41.                     gbNav7=true;
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47. if (gbBsOpera)
  48. {
  49.     var nPos = gstrBsAgent.indexOf("opera");
  50.     if(nPos!=-1)
  51.     {
  52.         var nVersion = parseFloat(gstrBsAgent.substring(nPos+6));
  53.         if (nVersion >= 6)
  54.         {
  55.             gbBsOpera6=true;
  56.             if (nVersion >=7)
  57.                 gbBsOpera7=true;    
  58.         }
  59.     }
  60. }
  61.  
  62. if (gbWindows && gbBsIE && !parent.parent.parent.gbToolBarLoaded)
  63. {
  64.     var sVBScript = '';
  65.     sVBScript += '<script language="VBScript"\> \n';
  66.     sVBScript += 'Private i, x \n';
  67.     sVBScript += 'On Error Resume Next \n';
  68.     sVBScript += 'MM_FlashControlInstalled = False \n';
  69.     sVBScript += 'For i = 6 To 1 Step -1 \n';
  70.     sVBScript += '   Set x = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
  71.     sVBScript += '   MM_FlashControlInstalled = IsObject(x) \n';
  72.     sVBScript += '   If MM_FlashControlInstalled Then \n';
  73.     sVBScript += '       gnFlashVersion = i \n';
  74.     sVBScript += '       Exit For \n';
  75.     sVBScript += '   End If \n';
  76.     sVBScript += 'Next \n';
  77.     sVBScript += '</script> \n';
  78.     document.write(sVBScript);
  79. }
  80.  
  81. function IsFlashSupported()
  82. {
  83.     var bResult = false;
  84.  
  85.     if (gnFlashVersion == -1)
  86.     {
  87.         if (parent.parent.parent.gbToolBarLoaded)
  88.         {
  89.             gnFlashVersion = 6;
  90.         }
  91.         else
  92.         {
  93.             if (navigator.plugins && navigator.plugins.length > 0)
  94.             {
  95.                 if (navigator.plugins["Shockwave Flash"])
  96.                 {
  97.                     var words = navigator.plugins["Shockwave Flash"].description.split(" ");
  98.                     for (var i = 0; i < words.length; ++i)
  99.                     {
  100.                         if (isNaN(parseInt(words[i])))
  101.                             continue;
  102.                         gnFlashVersion = words[i];
  103.                     }
  104.                 }
  105.             }
  106.         }
  107.     }
  108.     if (gnFlashVersion == -1)
  109.     {
  110.         gnFlashVersion = 0;
  111.     }
  112.  
  113.     if (gnFlashVersion>=6)
  114.     {
  115.         bResult = true;
  116.     }
  117.  
  118.     return bResult;
  119. }
  120.  
  121. function SendCmdToMainHTML(cmd, param) {
  122.     if( (parent != this) && (parent.DoCommand) )
  123.     {
  124.         parent.DoCommand(cmd, param);    
  125.     }
  126. }
  127.  
  128. function sendTopicLoaded()
  129. {
  130.     parent.gbTopicLoaded = true;
  131.     SendCmdToMainHTML("CmdTopicIsLoaded",1);
  132. }
  133.  
  134. function DoCommand(cmd, param) {
  135.     if (cmd == "CmdAskIsTopicOnly")    {
  136.         if( (parent!=this) && (parent.DoCommand) )
  137.         {
  138.             parent.DoCommand(cmd, param);    
  139.         }
  140.     } else if (cmd == "CmdScrollbarDragStart") {
  141.         if (gbBsNS6 || (gbBsOpera && !gbMac)) {
  142.             document.getElementById("scrollbarDIV").style.visibility = "";
  143.         } else if (gbBsNS4) {
  144.             document.layers["scrollbarLayer"].visibility = "show";
  145.         }
  146.     } else if (cmd == "CmdScrollbarDragStop") {
  147.         if (gbBsNS6 || (gbBsOpera && !gbMac)) {
  148.             document.getElementById("scrollbarDIV").style.visibility = "hidden";
  149.         } else if (gbBsNS4) {
  150.             document.layers["scrollbarLayer"].visibility = "hidden";
  151.         }
  152.     } else if (cmd == "CmdScrollbarDragMove") {
  153.         if (gbBsNS6) {
  154.             document.getElementById("scrollbarDIV").style.left = param;
  155.         } else if (gbBsNS4) {
  156.             document.layers["scrollbarLayer"].pageX = param;
  157.         } else if (gbBsOpera && !gbMac) {
  158.             eval('document.all.scrollbarDIV').style.pixelLeft = param;
  159.         }
  160.     }
  161. }
  162.  
  163. function getElement(elementID) {
  164.     var element = null;
  165.     // See if the browser supports the functions we need to get to the element
  166.     if (document.getElementById) {
  167.         element = document.getElementById(elementID);
  168.     } else if (document.all) {
  169.         element = document.all(elementID);
  170.     }
  171.     return element;
  172.  
  173. // Unload processing
  174. function TopicUnloaded() {
  175.     parent.gbTopicLoaded = false;
  176.     SendCmdToMainHTML("CmdTopicUnloaded");
  177. }
  178. window.onunload = TopicUnloaded;
  179.  
  180. // project info
  181. function setRelStartPage(sPath)
  182. {
  183.     if (gsPPath.length == 0)
  184.     {
  185.         gsPPath = _getFullPath(_getPath(document.location.href),  _getPath(sPath));
  186.         gsStartPage = _getFullPath(_getPath(document.location.href), sPath);
  187.         gsRelCurPagePath = _getRelativeFileName(gsStartPage, document.location.href);
  188.     }
  189. }
  190.  
  191. function addTocInfo(sTocPath)
  192. {
  193.     gaPaths[gaPaths.length] = sTocPath;
  194. }
  195.  
  196. function addAvenueInfo(sName, sPrev, sNext)
  197. {
  198.     gaAvenues[gaAvenues.length] = new avenueInfo(sName, sPrev, sNext);    
  199. }
  200.  
  201. function avenueInfo(sName, sPrev, sNext)
  202. {
  203.     this.sName = sName;
  204.     this.sPrev = sPrev;
  205.     this.sNext = sNext;
  206. }
  207.  
  208. function _getNumLines(sLines)
  209. {
  210.     var nLines=1;
  211.     var nStart=0;
  212.     while(sLines.indexOf('\n',nStart)!=-1)
  213.     {
  214.         nLines++;
  215.         nStart = sLines.indexOf('\n',nStart)+1;
  216.     }
  217.     return nLines;
  218. }
  219.  
  220. function stringToRGB(color_str) {
  221.     
  222.     // First create a lowercase version of the string
  223.     var lowercase_str = color_str.toLowerCase();
  224.     var value = 0xFFFFFF;
  225.     
  226.     if (lowercase_str.charAt(0) == "#") {
  227.         // Convert HEX
  228.         value = parseInt(lowercase_str.substring(1, lowercase_str.length), 16);    
  229.     } else {
  230.         switch (lowercase_str) {
  231.             case "white": value = 0xFFFFFF; break;
  232.             case "black": value = 0x000000; break;
  233.             case "red": value = 0xFF0000; break;
  234.             case "green": value = 0x008000; break;
  235.             case "blue": value = 0x0000FF; break;
  236.             case "silver": value = 0xC0C0C0; break;
  237.             case "gray": value = 0x808080; break;
  238.             case "maroon": value = 0x800000; break;
  239.             case "purple": value = 0x800080; break;
  240.             case "fuchsia": value = 0xFF00FF; break;
  241.             case "magenta": value = 0xFF00FF; break;
  242.             case "lime": value = 0x00FF00; break;
  243.             case "olive": value = 0x808000; break;
  244.             case "yellow": value = 0xFFFF00; break;
  245.             case "navy": value = 0x000080; break;
  246.             case "teal": value = 0x008080; break;
  247.             case "aqua": value = 0x00FFFF; break;
  248.             case "cyan": value = 0x00FFFF; break;
  249.             case "brown": value = 0xA52A2A; break;
  250.             case "darkgray": value = 0xA9A9A9; break;
  251.             case "lightblue": value = 0xADD8E6; break;
  252.             case "tan": value = 0xD2B48C; break;
  253.             case "lightgray": value = 0xD3D3D3; break;
  254.             case "beige": value = 0xF5F5DC; break;
  255.             case "orange": value = 0xFFA500; break;
  256.             case "gold": value = 0xFFD700; break;
  257.         }
  258.     }
  259.     
  260.     return value;
  261. }
  262.  
  263.  
  264. function sendBgColorInfo()
  265. {
  266.     var bgColor = 0xFFFFFF; // default to white
  267.     if ((document.bgColor != null) && (document.bgColor != "")) {
  268.         bgColor = stringToRGB(document.bgColor);
  269.     }
  270.     SendCmdToMainHTML("CmdTopicBGColor", bgColor);    
  271. }
  272.  
  273. function createSyncInfo()
  274. {
  275.     var sSyncInfo="";
  276.     if (gaPaths.length <= 0)
  277.         return "";
  278.             
  279.     if (gsPPath.length == 0)
  280.         gsPPath = _getPath(document.location.href);
  281.         
  282.     sSyncInfo += gsPPath;
  283.     sSyncInfo += "\n"+document.location.href;
  284.     for(i=0;i<gaPaths.length;i++)
  285.     {
  286.         sSyncInfo += "\n"+ _getNumLines(gaPaths[i]) + "\n" +gaPaths[i];
  287.     }
  288.     return sSyncInfo;
  289. }
  290.  
  291. function sendSyncInfo()
  292. {    
  293.     if (gaPaths.length <= 0)
  294.         return;
  295.     var sSyncInfo=createSyncInfo();    
  296.     SendCmdToMainHTML("CmdSyncInfo",sSyncInfo);
  297. }
  298.  
  299. function autoSync(nSync)
  300. {
  301.     if (nSync == 0) return;
  302.     if (gaPaths.length <= 0)
  303.         return;
  304.     var sSyncInfo=createSyncInfo();    
  305.     SendCmdToMainHTML("CmdSyncTOC",sSyncInfo);    
  306. }
  307.  
  308.  
  309. function sendAveInfo()
  310. {    if (gaAvenues.length > 0)
  311.         setTimeout("Do_sendAveInfo();", 100);
  312. }
  313.  
  314. function Do_sendAveInfo()
  315. {    
  316.     var sAveInfo="";
  317.     for(i=0;i<gaAvenues.length;i++)
  318.     {
  319.         sAveInfo+=gaAvenues[i].sName+"\n";
  320.         sAveInfo+=gaAvenues[i].sPrev+"\n";
  321.         sAveInfo+=gaAvenues[i].sNext;
  322.         if(i != gaAvenues.length-1)
  323.             sAveInfo+="\n";
  324.     }
  325.     SendCmdToMainHTML("CmdBrowseSequenceInfo",sAveInfo);
  326. }
  327.  
  328. function addShowButton()
  329. {
  330.     if(parent.gbFHPureHtml)
  331.         return;    
  332.     if(isInPopup())
  333.         return;
  334.     if(gsTopicbarOrder.indexOf("show") <0 )
  335.         return;
  336.     if(!isTopicOnly())
  337.         return;    
  338.     var sHTML = "";
  339.     sHTML += "<table width=100%><tr>"    
  340.     sHTML += "<td width=33%>";
  341.     sHTML += "<div align=left>";
  342.     sHTML += "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";
  343.     sHTML += "<td><a class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">Show</a></td></tr></table> ";
  344.     sHTML += "</tr></table>";
  345.     sHTML += "</div>";
  346.     sHTML += "</tr></table>";
  347.     document.write(sHTML);
  348.     var sStyle = "<style type='text/css'>";
  349.     sStyle+= ".whtbtnshow{font-family:;font-size:10pt;font-style:;font-weight:;text-decoration:;color:;}";
  350.     sStyle+= "</style>";
  351.     document.write(sStyle);
  352. }
  353.  
  354. function show()
  355. {
  356.     if (gsStartPage != "")
  357.         window.location =  gsStartPage + "#" + gsRelCurPagePath;
  358. }
  359.  
  360. function isTopicOnly()
  361. {
  362.     if (gnTopicOnly == 1)
  363.         return true;
  364.     if (gnTopicOnly == 0)
  365.         return false;
  366.     if (parent == this)
  367.         return true;
  368.     if (gnTopicOnly == -1)
  369.     {
  370.         var oParam = new Object();
  371.         oParam.isTopicOnly = true;
  372.         SendCmdToMainHTML("CmdAskIsTopicOnly",oParam);
  373.         if (oParam.isTopicOnly)
  374.         {        
  375.             gnTopicOnly = 1;
  376.             return true;
  377.         }
  378.         else
  379.         {
  380.             gnTopicOnly = 0;
  381.             return false;
  382.         }
  383.     }
  384. }
  385.  
  386. function isInPopup()
  387. {
  388.     return (window.name.indexOf("BSSCPopup") != -1);
  389. }
  390.  
  391. function PickupDialog_Invoke()
  392. {
  393.     if (typeof(wfRelatedTopic)=="function" && Number(gsSkinVersion) > 2 && IsFlashSupported())
  394.             return wfRelatedTopic(PickupDialog_Invoke.arguments);
  395.     if (!gbIE4 || gbMac || gbOpera)
  396.     {
  397.         if (typeof(wfRelatedTopic)=="function" && Number(gsSkinVersion) > 2 && IsFlashSupported())
  398.             return wfRelatedTopic(PickupDialog_Invoke.arguments);
  399.         else if (typeof(_PopupMenu_Invoke)=="function")
  400.             return _PopupMenu_Invoke(PickupDialog_Invoke.arguments);
  401.     }
  402.     else
  403.     {
  404.         if (PickupDialog_Invoke.arguments.length > 2)
  405.         {
  406.             var sPickup = "%%%SF_PICKUP_HTM%%%";
  407.             if(sPickup.substr(0,2) == "%%")//WW: WWH_TODO delete it when release
  408.             sPickup = "wf_pickup1.htm";
  409.             var sPickupPath=gsPPath+sPickup; 
  410.             if (gbIE4)
  411.             {
  412.                 var sFrame = PickupDialog_Invoke.arguments[1];
  413.                 var aTopics = new Array();
  414.                 for (var i = 2; i< PickupDialog_Invoke.arguments.length; i+=2)
  415.                 {
  416.                     var j=aTopics.length;
  417.                     aTopics[j] = new Object();
  418.                     aTopics[j].m_sName=PickupDialog_Invoke.arguments[i];
  419.                     aTopics[j].m_sURL=PickupDialog_Invoke.arguments[i+1];
  420.                 }
  421.  
  422.                 if (aTopics.length > 1)
  423.                 {
  424.                     var nWidth = 300;
  425.                     var nHeight =180;
  426.                     var    nScreenWidth=screen.width;
  427.                     var    nScreenHeight=screen.height;
  428.                     var nLeft=(nScreenWidth-nWidth)/2;
  429.                     var nTop=(nScreenHeight-nHeight)/2;
  430.                     if (gbIE4)
  431.                     {
  432.                         var vRet = window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;");
  433.                         if (vRet)
  434.                         {
  435.                             var sURL = vRet.m_url;
  436.                             if (sFrame)
  437.                                 window.open(sURL, sFrame);
  438.                             else
  439.                                 window.open(sURL, "_self");
  440.                         }
  441.                     }
  442.                 }
  443.                 else if (aTopics.length == 1)
  444.                 {
  445.                     var sURL =     aTopics[0].m_sURL
  446.                     if (sFrame)
  447.                         window.open(sURL, sFrame);
  448.                     else
  449.                         window.open(sURL, "_self");
  450.                 }
  451.             }
  452.         }
  453.     }
  454. }
  455. // Add a hidden layer to simulate scrollbar dragging if this is not a browser that can handle dynamic frame resizing
  456. if (gbBsNS6) {
  457.     var sHTML = "<div id='scrollbarDIV' style='LEFT:10px; WIDTH:3px; POSITION:absolute; TOP:0px; HEIGHT:100%; BACKGROUND-COLOR:lightgrey; visibility:hidden; Z-INDEX:100; BORDER-WIDTH:1px; BORDER-COLOR:darkgray; BORDER-RIGHT-STYLE:solid; BORDER-LEFT-STYLE:solid;'></div>";
  458.     document.write(sHTML);
  459. } else if (gbBsOpera) {
  460.     var sHTML = "<div id='scrollbarDIV' style='LEFT:10px; WIDTH:5px; POSITION:absolute; TOP:0px; HEIGHT:100%; BACKGROUND-COLOR:lightgrey; visibility:hidden; Z-INDEX:100; BORDER-WIDTH:1px; BORDER-COLOR:#A9A9A9; BORDER-RIGHT-STYLE:solid; BORDER-LEFT-STYLE:solid;'></div>";
  461.     document.write(sHTML);
  462. } else if (gbBsNS4) {
  463.     var sHTML = "<layer pagex='-10' pagey='0' width='4' height='100%' name='scrollbarLayer' visibility='hidden' bgcolor='lightgrey' z-index='100'></layer>";
  464.     document.write(sHTML);
  465. }
  466.  
  467.  
  468. // Add a hidden layer to load the related topics dialog in
  469. if (gbBsNS4 && !gbBsNS6) 
  470. {
  471.     var sHTML = "<layer pagex='-10' pagey='-10' width='1' height='1' name='relatedTopicsLayer' visibility='hide' z-index='100'></layer>";
  472. }
  473. else 
  474. {
  475.     var sHTML = "<DIV ID='relatedTopicsDIV' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>"
  476. }
  477.  
  478. document.write(sHTML);
  479.  
  480. var gRtXPos = 0;
  481. var gRtYPos = 0;
  482. var gRtWidth = 0;
  483. var gRtHeight = 0;
  484. var gsHtml = "";
  485.  
  486. var CHECK_RELATED_TIMEOUT = 600;
  487. var gsFlashVars = "";
  488. var gbRtLoaded = false;
  489. var gbRtSized = false;
  490. var gbRtOrigMouseDown = null;
  491. var gRtTargetDoc = null;
  492. var gsTargetFrame="";
  493. var gbDivClicked = false;
  494. var gbRtOpened = false;
  495. var gsSwfLoader = "wf_related.swf"
  496. var gsSkinIndexSwf = "%%%WFT_INDEX_SWF%%%"
  497. var gsSkinIndexFont = "%%%WFT_INDEX_SWF_FONT%%%";
  498. var gsSkinIndexHighlight = "%%%WFT_INDEX_SWF_FONT_HOVER%%%";
  499. var gsSkinVersion="%%%WFT_SKIN_VERSION%%%"
  500.  
  501. function escapeChar(in_str)
  502. {
  503.     var out_str = in_str;
  504.  
  505.     out_str = replaceChar(out_str,'%');
  506.     out_str = replaceChar(out_str,'\'');
  507.     out_str = replaceChar(out_str,'&');
  508.     out_str = replaceChar(out_str,'+');
  509.     out_str = replaceChar(out_str,' ');
  510.  
  511.     return out_str;
  512. }
  513.  
  514. function replaceChar(in_str, sChar)
  515. {
  516.     var out_str = in_str;
  517.     var temp_str = "";
  518.     var nOldIndex=0;
  519.     var nIndex = out_str.indexOf(sChar);
  520.     while (nIndex >= 0)
  521.     {
  522.         temp_str = out_str.substring(0,nIndex);
  523.         temp_str +="%" + dec2hex(sChar.charCodeAt(0)) ;
  524.         temp_str +=out_str.substring(nIndex+1);
  525.         out_str = temp_str;
  526.         nOldIndex = nIndex;
  527.         nIndex = out_str.indexOf(sChar, nOldIndex+1);
  528.     }
  529.     return out_str;
  530. }
  531.  
  532. function dec2hex(dec_num)
  533. {
  534.     // This function will convert a dec number <= 255 to a hex string
  535.     var hex_str = "";
  536.     var hexArray = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
  537.     hex_str += hexArray[Math.floor(dec_num/16)];
  538.     hex_str += hexArray[dec_num%16];
  539.     return hex_str;    
  540. }
  541.  
  542. function wfRelatedTopic(fn_arguments)
  543. {
  544.     var strPath = gsPPath;
  545.     if (gbBsNS4 && !gbBsNS6)
  546.     {
  547.         strPath = escapeChar(gsPPath);
  548.     }
  549.     var argLen = fn_arguments.length;
  550.     var e = fn_arguments[0];
  551.  
  552.     // Check to Make sure we have a valid number of parameters
  553.     if (argLen < 3) 
  554.     {
  555.         return false;
  556.     }
  557.     
  558.     var targetDoc = null;
  559.     
  560.     if (isInPopup())
  561.     {
  562.         targetDoc = parent;
  563.     }
  564.     else
  565.     {
  566.         targetDoc = this;
  567.     }
  568.     gRtTargetDoc = targetDoc;
  569.     gsTargetFrame = fn_arguments[1];
  570.  
  571.     // If there is only one topic simply display this topic
  572.     if (argLen <= 4) 
  573.     {
  574.         if (targetDoc != null) 
  575.         {
  576.             targetDoc.location.href = fn_arguments[3];
  577.         }
  578.         else 
  579.         {
  580.             if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")
  581.             {
  582.                 window.open(fn_arguments[3], fn_arguments[1]);
  583.             }
  584.             else
  585.             {
  586.                 window.open(fn_arguments[3]);
  587.             }
  588.         }
  589.         return false;
  590.     }
  591.     // Display the popup window
  592.     else
  593.     {
  594.         // If the browser does not support DOM or ILayer open a new window
  595.         if ((gbBsOpera6 && !gbBsOpera7) || gbKonqueror)
  596.         {
  597.             RtWindowCtrl(fn_arguments)
  598.             return;
  599.         }
  600.  
  601.         // Build the Flash Var List
  602.         var strFlashVars = "";
  603.         strFlashVars += "nItemCount="+argLen;
  604.         strFlashVars += "&gsSkinSwf="+gsSkinIndexSwf;
  605.         strFlashVars += "&gsFont="+gsSkinIndexFont;
  606.         strFlashVars += "&gsFontHighlight="+gsSkinIndexHighlight;
  607.  
  608.         if (gbBsNS6 || gbBsNS4 || gbSafari)
  609.         {
  610.             strFlashVars += "&nTopicHeight="+(window.innerHeight-16);
  611.         }
  612.         else
  613.         {
  614.             strFlashVars += "&nTopicHeight="+(document.body.offsetHeight-20);
  615.         }
  616.         
  617.         for (var i = 2; i < argLen; i++)
  618.         {
  619.             strFlashVars += "&arrVal"+i+"="+escapeChar(fn_arguments[i]);
  620.         }
  621.         gsFlashVars = strFlashVars;
  622.  
  623.         // Build the SWF Object
  624.         var sHtml = "";
  625.         if (gbMac && gbBsIE)
  626.         {
  627.             sHtml += "<TABLE STYLE='border:2px outset white;' BGCOLOR=#c0c0c0 id='relatedTopicsTB' width='1px' height='1px' CELLSPACING=0> <TR><TD>";
  628.         }
  629.         var rtWidth = "100%";
  630.         var rtHeight = "100%";
  631.         if ((gbBsNS6 && !gbNav7) || gbMozilla)
  632.         {
  633.             rtWidth = "1";
  634.             rtHeight = "1";
  635.         }
  636.  
  637.         sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
  638.         sHtml += "id='rlctrlSWF' ALIGN='' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' VIEWASTEXT>";
  639.         sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
  640.         sHtml += "<PARAM NAME='movie' VALUE='"+strPath+gsSwfLoader+"'>";
  641.         sHtml += "<PARAM NAME=quality VALUE=high>";
  642.         sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
  643.         sHtml += "<EMBED src='"+strPath+gsSwfLoader+"' quality=high  NAME='rlctrlSWF' BASE="+strPath+" swLiveConnect='true' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' ALIGN='' ";
  644.         sHtml += "FlashVars='" + strFlashVars + "' ";
  645.         sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
  646.         sHtml += "</EMBED>";
  647.         sHtml += "</OBJECT>";
  648.         if (gbMac && gbBsIE)
  649.         {
  650.             sHtml += "</TD></TR></TABLE>\n";
  651.         }
  652.  
  653.         // Insert the SWF Object
  654.         if (gbBsNS4 && !gbBsNS6) 
  655.         {
  656.             if (gbRtOpened)
  657.             {
  658.                 closeRtCtrl();
  659.                 if (!gbMac && !gbWindows)
  660.                 {
  661.                     return;
  662.                 }
  663.             }
  664.             gbRtOpened = true;
  665.             // Add an image otherwise NS4 will not render the swf
  666.             sHtml += "<img src='"+strPath+"wf_loadswf.jpg'></img>";    
  667.             gsHtml = sHtml;
  668.  
  669.             var rtLayer = document.layers["relatedTopicsLayer"];
  670.             rtLayer.document.open();
  671.             rtLayer.document.write(sHtml);
  672.             rtLayer.document.close();
  673.             gRtXPos = e.pageX;
  674.             gRtYPos = e.pageY;
  675.             gbRtSized = false;
  676.             setTimeout("IsRtSized()",CHECK_RELATED_TIMEOUT);
  677.         }
  678.         else
  679.         {
  680.             var rtDiv = null;
  681.             rtDiv = getElement("relatedTopicsDIV");
  682.             rtDiv.style.visibility = "visible";
  683.             rtDiv.innerHTML = sHtml;
  684.             gRtXPos = e.clientX;
  685.             gRtYPos = e.clientY;
  686.             rtDiv.style.top  = 0;
  687.             rtDiv.style.left = 0;
  688.             rtDiv.style.width = 1;
  689.             rtDiv.style.height= 1;
  690.         
  691.         }
  692.         document.onmousedown = RtParentClicked;
  693.         rtDiv.onmousedown = RtDivClicked;
  694.     }
  695. }
  696.  
  697. function RtDivClicked()
  698. {
  699.     gbDivClicked = true;
  700. }
  701.  
  702. function sizeRtCtrl(rtWidth, rtHeight)
  703. {
  704.     var strPath = gsPPath;
  705.     if (gbBsNS4 && !gbBsNS6)
  706.     {
  707.         strPath = escapeChar(gsPPath);
  708.     }
  709.     gbRtSized = true;
  710.     rtWidth = Number(rtWidth);
  711.     rtHeight = Number(rtHeight);
  712.  
  713.     // Get Window Height
  714.     var nHeight = 0;
  715.  
  716.     if (gbBsNS6 || gbBsNS4 || gbSafari)
  717.     {
  718.         nHeight = window.innerHeight - 16;
  719.     }
  720.     else
  721.     {
  722.         nHeight = document.body.offsetHeight - 20;
  723.     }
  724.  
  725.     // Set Y Position
  726.     var scrollYOffset = 0;
  727.     if (gbBsNS4 && !gbBsNS7)
  728.     {
  729.         scrollYOffset = window.pageYOffset;
  730.     }
  731.     else
  732.     {
  733.         scrollYOffset = document.body.scrollTop;
  734.     }
  735.  
  736.     if (!gbBsNS4 || gbBsNS6)
  737.     {
  738.         if ((gRtYPos + rtHeight - scrollYOffset) > nHeight)
  739.         {
  740.             gRtYPos = scrollYOffset + nHeight - rtHeight;
  741.         }
  742.         else
  743.         {
  744.             gRtYPos += scrollYOffset;
  745.             if (gRtYPos+rtHeight > scrollYOffset + nHeight)
  746.             {
  747.                 gRtYPos = scrollYOffset + nHeight - rtHeight;
  748.             }
  749.         }
  750.     }
  751.     else
  752.     {
  753.         if (gRtYPos+rtHeight > scrollYOffset + nHeight)
  754.         {
  755.             gRtYPos = scrollYOffset + nHeight - rtHeight;
  756.         }
  757.     }
  758.  
  759.     // Get Window Width
  760.     var nWidth = 0;
  761.  
  762.     if (gbBsNS6 || gbBsNS4 || gbSafari)
  763.     {
  764.         nWidth = window.innerWidth - 16;
  765.     }
  766.     else
  767.     {
  768.         nWidth = document.body.offsetWidth - 20;
  769.     }
  770.  
  771.     // Set X Position
  772.     var scrollXOffset = 0;
  773.     if (gbBsNS4 && !gbBsNS7)
  774.     {
  775.         scrollYOffset = window.pageYOffset;
  776.     }
  777.     else
  778.     {
  779.         scrollXOffset = document.body.scrollLeft;
  780.     }
  781.  
  782.     if (!gbBsNS4 || gbBsNS6)
  783.     {
  784.         if ((gRtXPos + rtWidth - scrollXOffset) > nWidth)
  785.         {
  786.             gRtXPos = scrollXOffset + nWidth - rtWidth;
  787.         } 
  788.         else 
  789.         {
  790.             gRtXPos += scrollXOffset;
  791.             if (gRtXPos +rtWidth > scrollXOffset + nWidth)
  792.             {
  793.                 gRtXPos = scrollXOffset + nWidth - rtWidth;
  794.             }
  795.         }
  796.     }
  797.     else
  798.     {
  799.         if (gRtXPos +rtWidth > scrollXOffset + nWidth)
  800.         {
  801.             gRtXPos = scrollXOffset + nWidth - rtWidth;
  802.         }
  803.     }
  804.  
  805.  
  806.     if (gbBsNS4 && !gbBsNS6)
  807.     {
  808.         var rtLayer = document.layers["relatedTopicsLayer"];
  809.         var strFlashVars = gsFlashVars + "&gnNoResize=1";
  810.         gRtWidth = rtWidth;
  811.         gRtHeight = rtHeight;
  812.         // Rebuild flash object with correct width and height
  813.         var sHtml = "";
  814.         sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
  815.         sHtml += "id='rlctrlSWF' ALIGN='' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' VIEWASTEXT>";
  816.         sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
  817.         sHtml += "<PARAM NAME='movie' VALUE='"+strPath+gsSwfLoader+"'>";
  818.         sHtml += "<PARAM NAME=quality VALUE=high>";
  819.         sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
  820.         sHtml += "<EMBED src='"+strPath+gsSwfLoader+"' quality=high BASE="+strPath+" NAME='rlctrlSWF' swLiveConnect='true' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' ALIGN='' ";
  821.         sHtml += "FlashVars='" + strFlashVars + "' ";
  822.         sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
  823.         sHtml += "</EMBED>";
  824.         sHtml += "</OBJECT>";
  825.  
  826.         rtLayer.moveTo( gRtXPos, gRtYPos);
  827.         rtLayer.resizeTo(rtWidth,rtHeight);
  828.         rtLayer.document.open();
  829.         rtLayer.document.write(sHtml);
  830.         rtLayer.document.close();
  831.         gbRtLoaded = false;
  832.         setTimeout("IsRtLoaded()",CHECK_RELATED_TIMEOUT);
  833.     }
  834.     else if ((gbBsNS6 && !gbNav7) || gbMozilla)
  835.     {
  836.         var strFlashVars = gsFlashVars + "&gnNoResize=1";
  837.         gRtWidth = rtWidth;
  838.         gRtHeight = rtHeight;
  839.         // Rebuild flash object with correct width and height
  840.         var sHtml = "";
  841.         sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
  842.         sHtml += "id='rlctrlSWF' ALIGN='' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' VIEWASTEXT>";
  843.         sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
  844.         sHtml += "<PARAM NAME='movie' VALUE='"+strPath+gsSwfLoader+"'>";
  845.         sHtml += "<PARAM NAME=quality VALUE=high>";
  846.         sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
  847.         sHtml += "<EMBED src='"+strPath+gsSwfLoader+"' quality=high BASE="+strPath+" NAME='rlctrlSWF' swLiveConnect='true' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' ALIGN='' ";
  848.         sHtml += "FlashVars='" + strFlashVars + "' ";
  849.         sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
  850.         sHtml += "</EMBED>";
  851.         sHtml += "</OBJECT>";
  852.  
  853.         var rtDiv = null;
  854.         rtDiv = getElement("relatedTopicsDIV");
  855.         // moveTo
  856.         rtDiv.style.top   = gRtYPos;
  857.         rtDiv.style.left  = gRtXPos;
  858.         // resizeTo
  859.         rtDiv.style.width = rtWidth;
  860.         rtDiv.style.height= rtHeight;
  861.  
  862.         rtDiv.innerHTML = sHtml;
  863.     }
  864.     else 
  865.     {
  866.         if (gbMac && gbBsIE)
  867.         {
  868.             var rtTable = getElement("relatedTopicsTB");
  869.             rtTable.style.height = rtHeight;
  870.             rtTable.style.width = rtWidth;        
  871.         }
  872.  
  873.         rtDiv = getElement("relatedTopicsDIV");
  874.         rtDiv.style.top   = gRtYPos;
  875.         rtDiv.style.left  = gRtXPos;
  876.         rtDiv.style.width = rtWidth;
  877.         rtDiv.style.height= rtHeight;
  878.  
  879.         if (!isInPopup())
  880.         {
  881.             if (window.rlctrlSWF)
  882.             {
  883.                 if (window.rlctrlSWF.focus)
  884.                 {
  885.                     window.rlctrlSWF.focus();
  886.                 }
  887.             }
  888.         }
  889.     }
  890. }
  891.  
  892.  
  893. function IsRtSized()
  894. {
  895.     if (!gbRtSized)
  896.     {
  897.         var rtLayer = document.layers["relatedTopicsLayer"];
  898.         rtLayer.document.open();
  899.         rtLayer.document.write(gsHtml);
  900.         rtLayer.document.close();
  901.         setTimeout("IsRtSized()",CHECK_RELATED_TIMEOUT);
  902.     }
  903. }
  904.  
  905. function closeRtCtrl()
  906. {
  907.     gbRtOpened = false;
  908.     if (gbBsNS4 && !gbBsNS6)
  909.     {
  910.         if (!gbMac && !gbWindows)
  911.         {
  912.             document.location.reload();
  913.             return;
  914.         }
  915.         var rtLayer = document.layers["relatedTopicsLayer"];
  916.         rtLayer.visibility="hide";
  917.         rtLayer.resizeTo(1,1);
  918.         rtLayer.moveTo( -10, -10);
  919.         rtLayer.document.open();
  920.         rtLayer.document.write("<TABLE> </TABLE>");
  921.         rtLayer.document.close();
  922.     }
  923.     else
  924.     {
  925.         rtDiv = getElement("relatedTopicsDIV");
  926.         rtDiv.innerHTML = "<TABLE> </TABLE>\n";
  927.         rtDiv.style.visibility = "hidden";
  928.     }
  929. }
  930.  
  931.  
  932. function RtClicked(strTopicURL)
  933. {
  934.     closeRtCtrl();
  935.     if (gRtTargetDoc != null) 
  936.     {
  937.         if (gsTargetFrame != "")
  938.         {
  939.             gRtTargetDoc.window.open(strTopicURL,gsTargetFrame,"");
  940.         }
  941.         else
  942.         {
  943.             gRtTargetDoc.location.href = strTopicURL;
  944.         }
  945.     }
  946.     else if (gsTargetFrame != "")
  947.     {
  948.         window.open(strTopicURL,gsTargetFrame,"");
  949.     }
  950.     else
  951.     {
  952.         window.location.href = strTopicURL;
  953.     }
  954. }
  955.  
  956.  
  957. function IsRtLoaded()
  958. {
  959.     var rtLayer = document.layers["relatedTopicsLayer"];
  960.     if (!gbRtLoaded && rtLayer.visibility !="show")
  961.     {
  962.         sizeRtCtrl(gRtWidth, gRtHeight);
  963.     }
  964. }
  965.  
  966. function RtLoaded()
  967. {
  968.     gbRtLoaded = true;
  969.     var rtLayer = document.layers["relatedTopicsLayer"];
  970.     rtLayer.visibility = "show";
  971. }
  972.  
  973. function RtParentClicked()
  974. {
  975.     if (!gbDivClicked)
  976.     {
  977.         document.onmousedown = gbRtOrigMouseDown;
  978.         closeRtCtrl();
  979.     }
  980.     else
  981.     {
  982.         gbDivClicked = false;
  983.     }
  984.  
  985.     return true;
  986. }
  987.  
  988. var gPopWnd = null;
  989. var gfn_arguments = null;
  990.  
  991. function RtWindowCtrl(fn_arguments)
  992. {
  993.     var strPath = gsPPath;
  994.     if (gbBsNS4 && !gbBsNS6)
  995.     {
  996.         strPath = escapeChar(gsPPath);
  997.     }
  998.     gfn_arguments = fn_arguments;
  999.     if (gbBsOpera6 && gbMac && gPopWnd == null)
  1000.     {
  1001.         var wndOldPopupLinks= window.open(strPath+"wf_blank.htm", "popuptemp");
  1002.         wndOldPopupLinks.close();
  1003.         setTimeout("RtWindowCtrl2();",100);
  1004.     }
  1005.     else
  1006.     {
  1007.         RtWindowCtrl2();
  1008.     }
  1009. }
  1010.  
  1011. function RtWindowCtrl2()
  1012. {
  1013.     var strPath = gsPPath;
  1014.     if (gbBsNS4 && !gbBsNS6)
  1015.     {
  1016.         strPath = escapeChar(gsPPath);
  1017.     }
  1018.     var fn_arguments = gfn_arguments;
  1019.  
  1020.     if (gPopWnd != null)
  1021.     {
  1022.         if (gPopWnd.close)
  1023.             gPopWnd.close();
  1024.         gPopWnd = null;
  1025.         setTimeout("RtWindowCtrl2()",100);
  1026.         return false;
  1027.     }
  1028.  
  1029.     var argLen     = fn_arguments.length;
  1030.     var e = fn_arguments[0];
  1031.  
  1032.     // Create the window
  1033.     var nHeight = 200;
  1034.     var nWidth = 200;
  1035.     gRtXPos = e.clientX;
  1036.     gRtYPos = e.clientY+30;
  1037.  
  1038.     var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=no,scrollbars=auto";
  1039.     strParam += ",height=" + nHeight + ",width="+nWidth;
  1040.     strParam += ",left="+ gRtXPos + ",top="+gRtYPos;
  1041.  
  1042.     // Build the Flash Var List
  1043.     var strFlashVars = "";
  1044.     strFlashVars += "nItemCount="+argLen;
  1045.     strFlashVars += "&gsSkinSwf="+gsSkinIndexSwf;
  1046.     strFlashVars += "&gsFont="+gsSkinIndexFont;
  1047.     strFlashVars += "&gsFontHighlight="+gsSkinIndexHighlight;
  1048.     strFlashVars += "&nTopicHeight="+nHeight;
  1049.  
  1050.     for (var i = 2; i < argLen; i++)
  1051.     {
  1052.         strFlashVars += "&arrVal"+i+"="+fn_arguments[i];
  1053.     }
  1054.     gsFlashVars = strFlashVars;
  1055.     gbRtSized = false;
  1056.  
  1057.     // Create the popup window
  1058.     var wndPopupLinks=null;
  1059.     wndPopupLinks= window.open(strPath+"wf_related.htm", "popuplinks", strParam);
  1060.     gPopWnd = wndPopupLinks;
  1061.     return false;
  1062. }
  1063.  
  1064. var gsWndParams = "";
  1065. function ResizeRtWindow(nWidth, nHeight)
  1066. {
  1067.     var xPos = 100;
  1068.     var yPos = 100;
  1069.     gPopWnd.close();
  1070.     gbRtSized = true;
  1071.     var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=no,scrollbars=auto";
  1072.     strParam += ",height=" + nHeight + ",width="+nWidth;
  1073.     strParam += ",left="+ gRtXPos + ",top="+gRtYPos;
  1074.     gsWndParams = strParam;
  1075.  
  1076.     // Create the popup window
  1077.     setTimeout("OpenWindow()",100);
  1078.  
  1079.  
  1080.     return false;
  1081. }
  1082.  
  1083. function OpenWindow()
  1084. {
  1085.     var strPath = gsPPath;
  1086.     if (gbBsNS4 && !gbBsNS6)
  1087.     {
  1088.         strPath = escapeChar(gsPPath);
  1089.     }
  1090.     var wndPopupLinks=null;
  1091.     wndPopupLinks= window.open(strPath+"wf_related.htm", "popuplinks", gsWndParams);
  1092.     gPopWnd = wndPopupLinks;
  1093. }
  1094.